home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1994 October / Macformat17.cdr / Shareware City / Developers / shutdown-fx-20-c / Shutdown proc ƒ / sfx shutdown proc.c next >
C/C++ Source or Header  |  1994-07-11  |  1KB  |  76 lines

  1. struct QDGlobals
  2. {
  3.     char privates[76];
  4.     long randSeed;
  5.     BitMap screenBits;
  6.     Cursor arrow;
  7.     Pattern dkGray;
  8.     Pattern ltGray;
  9.     Pattern gray;
  10.     Pattern black;
  11.     Pattern white;
  12.     GrafPtr thePort;
  13.     long    end;
  14. };
  15.  
  16. typedef struct QDGlobals QDGlobals;
  17. typedef pascal short (*FadeProcPtr)(Rect boundsRect, Pattern *thePattern);
  18.  
  19. pascal void main(void);
  20. pascal void DoTheDangFade(FadeProcPtr theFade);
  21.  
  22. pascal void main(void)
  23. {
  24.     FadeProcPtr        theFade;
  25.     short            doFade;
  26.     
  27.     asm
  28.     {
  29.         bra.s    @3                /* branch past raw data */
  30.     @1    dc.l    0                /* will be set to address of fade */
  31.     @2    dc.w    0                /* will be set to 1 or 0 (do fade or not) */
  32.     @3    move.l    @1, theFade        /* move address of fade into local var */
  33.         move.w    @2, doFade        /* move do fade flag into local var */
  34.     }
  35.     
  36.     if (doFade)
  37.         DoTheDangFade(theFade);
  38. }
  39.  
  40. pascal void DoTheDangFade(FadeProcPtr theFade)
  41. {
  42.     short            oldMenuBarHeight;
  43.     long            oldA5;
  44.     QDGlobals        qd;                /* our QD globals. */
  45.     GrafPort        gp;                /* our grafport. */
  46.     GrafPtr            savePort;
  47.     THz                saveZone;
  48.     
  49.     GetPort(&savePort);
  50.     oldMenuBarHeight=MBarHeight;
  51.     MBarHeight=0;
  52.     DrawMenuBar();
  53.  
  54.     /* get a value for A5, a structure that mirrors qd globals. */
  55.     oldA5 = SetA5((long)&qd.end);
  56.     InitGraf(&qd.thePort);
  57.     OpenPort(&gp);
  58.     
  59.     HideCursor();
  60.     
  61.     saveZone=GetZone();
  62.     SetZone(SysZone);
  63.  
  64.     theFade(gp.portRect, &qd.black);
  65.     
  66.     SetZone(saveZone);
  67.     
  68.     MBarHeight=oldMenuBarHeight;
  69.     ShowCursor();
  70.     ObscureCursor();
  71.     
  72.     ClosePort(&gp);
  73.     SetA5(oldA5);
  74.     SetPort(savePort);
  75. }
  76.